package com.atguigu;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.util.Set;

public class JedisTest {
    private static JedisPool pool =  null ;

    public static Jedis getJedis(){
        //判断连接池是否为空
        if (pool==null){
            //r如果没有链接池，则先创建连接池
            JedisPoolConfig jedisPoolConfig =new JedisPoolConfig();
            jedisPoolConfig.setMaxTotal(10); //最大可用连接数
            jedisPoolConfig.setMaxIdle(5); //最大闲置连接数
            jedisPoolConfig.setMinIdle(5); //最小闲置连接数
            jedisPoolConfig.setBlockWhenExhausted(true); //连接耗尽是否等待
            jedisPoolConfig.setMaxWaitMillis(2000); //等待时间
            jedisPoolConfig.setTestOnBorrow(true); //取连接的时候进行一下测试 ping pong
            pool = new JedisPool(jedisPoolConfig,"hadoop102");
            return pool.getResource();
        }else {
            return pool.getResource();
        }
    }

    //关闭连接池
    public static void closeJedisPoll(){
        if (pool!=null){
            //关闭连接池
            pool.close();
        }else {
            System.out.println("没有链接池！！！请注意");
        }

    }





    public static void main(String[] args) {

        //1.创建Redis链接
//        Jedis jedis = new Jedis("hadoop102",6379);
        Jedis jedis = JedisTest.getJedis();

        //2.测试是否连通
//        String ping = jedis.ping();
        //测试其他命令
        //String
//        jedis.set("0309String", "very good");
//        //List
//        jedis.lpush("0309List", "very", "very good");
//        //Set
//        jedis.sadd("0309Set", "very", "very", "very Good");
//        //Hash
//        jedis.hset("0309Hash", "very", "good");
//        //Zset
//        jedis.zadd("0309Zset", 100, "very Good");

        //3.打印返回的信息
        //获取String类型的数据
//        System.out.println(jedis.get("0309String"));

        //获取Set类型的数据
//        Set<String> smembers = jedis.smembers("0309Set");
//        System.out.println(smembers);

//        System.out.println(ping);

        //设置过期时间
        jedis.expire("0309List", 10);

        //通过TTL查看剩余时间
        //设置控制循环的条件
        boolean isRunning = true;
        while (isRunning){
            //获取剩余的时间
            Long ttl = jedis.ttl("0309List");
            //打印到控制台
            System.out.println(ttl);
            //通过判断剩余时间如果是-2的话证明数据已经过期，则终止循环
            if (ttl==-2){
                //将控制循环的条件置为False
                isRunning = false;
            }
            //每秒钟循环一次
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

        //4.关闭链接
        jedis.close();
    }
}
